package com.resoft.bigdata.p2p.service.api;

import java.io.IOException;
import java.util.List;

import com.resoft.bigdata.p2p.record.DebtorInfo;
import com.resoft.bigdata.p2p.record.InvestInfo;
import com.resoft.bigdata.p2p.record.LoanContract;
import com.resoft.bigdata.p2p.record.MonthlyStatistics;

public interface QueryService {
	
	
	/**
	 * 
	 * @return
	 * @throws IOException
	 */
	List<String> getOrgCodes() throws IOException;
	/**
	 * 
	 * @param date: 查询开始日期，格式 yyyy-MM-dd，包含该日期
	 * @return
	 * @throws IOException 
	 */
	List<String> getOrgCodes(String date) throws IOException;
	
	
	/**
	 *  
	 * @param orgCode: p2p 公司编码
	 * @param beginDate：查询开始日期，格式 yyyy-MM-dd，包含该日期
	 * @param endDate：查询结束日期，格式 yyyy-MM-dd， 包含该日期
	 * @param pageSize：每页分页大小
	 * @param lastRow：上次查询的结束行健， 首次查询为空
	 * @return ： 按时间逆序，合同编号顺序的贷款合同明细信息
	 * @throws IOException 
	 */
	List<LoanContract> getLoanContractByOrgCodeAndDates(String orgCode, String beginDate, String endDate, long pageSize, byte[] lastRow) throws IOException;
	
	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param date：查询日期，格式 yyyy-MM-dd
	 * @return : 合同编号顺序的贷款合同明细信息
	 * @throws IOException 
	 */
	List<LoanContract> getLoanContractByOrgCodeAndOneDate(String orgCode, String date) throws IOException;
	
	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param beginDate：查询开始日期，格式 yyyy-MM-dd，包含该日期
	 * @param endDate：查询结束日期，格式 yyyy-MM-dd， 包含该日期
	 * @param pageSize：每页分页大小
	 * @param lastRow：上次查询的结束行健， 首次查询为空
	 * @return ： 按时间逆序，合同编号顺序的贷款合同明细信息
	 * @return
	 */
	List<DebtorInfo> getDebtorInfoByOrgCodeAndDates(String orgCode, String beginDate, String endDate, long pageSize, byte[] lastRow);

	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param date：查询日期，格式 yyyy-MM-dd
	 * @return : 合同编号顺序的贷款合同明细信息
	 */
	List<DebtorInfo> getDebtorInfoByOrgCodeAndOneDate(String orgCode, String date);

	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param beginDate：查询开始日期，格式 yyyy-MM-dd，包含该日期
	 * @param endDate：查询结束日期，格式 yyyy-MM-dd， 包含该日期
	 * @param pageSize：每页分页大小
	 * @param lastRow：上次查询的结束行健， 首次查询为空
	 * @return
	 */
	List<InvestInfo> getInvestInfoByOrgCodeAndDates(String orgCode, String beginDate, String endDate, long pageSize, byte[] lastRow);

	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param date：查询日期，格式 yyyy-MM-dd
	 * @return
	 */
	List<InvestInfo> getInvestInfoByOrgCodeAndOneDate(String orgCode, String date);


	/**
	 * 
	 * @param beginDate: 统计开始日期，包含该日期
	 * @param endDate：统计结束日期， 包含该日期
	 * @return
	 */
	List<MonthlyStatistics> getAllp2pMonthlyStatistics(String beginDate, String endDate);

	/**
	 * 
	 * @param date:统计日期
	 * @return
	 */
	List<MonthlyStatistics> getAllp2pMonthlyStatistics(String date);

	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param beginDate:统计开始日期，包含该日期
	 * @param endDate：统计结束日期， 包含该日期
	 * @return
	 */
	List<MonthlyStatistics> getp2pMonthlyStatistics(String orgCode, String beginDate, String endDate);
	
	/**
	 * 
	 * @param orgCode: p2p 公司编码
	 * @param date:统计日期
	 * @return
	 */
	List<MonthlyStatistics> getp2pMonthlyStatistics(String orgCode, String date);
}
